const fs = require('fs');
const path = require('path');
const resolve = (filename) => {
  return path.resolve(__dirname, filename);
};

let result = fs.readFileSync(resolve('gbk'));

console.log(result.toString());
//当我们在桌面创建一个.txt时,默认编码是gb2312，而又由于Node.js默认是不支持的，So我们通过fs读取到的buffer是转换不成我们想要的中文文字的。
//大多数编辑器打开这些文件时候也会乱码。
//即使将txt文件的后缀名更改为.js也是一样的。
//当我们将文本另存为utf8（通过记事本(txt)自己的另存为才会出现bom头(或则可能是在桌面创建的记事本的原因)，webstorm里直接转化的话不会带bom头)
//这样虽然能让中文正常显示，但我们发现在开始的位置却出现了乱码(.toString()方法情景下)。
// 这是为什么呢？
// 在我们使用unicode系编码的时，因为unicode编码有很多实现，So它会签个名，表示这个文件的是utf8编码的，归utf8管。这样我们再使用编辑器打开的时候它就不会乱码
// 没错虽然toString()开头有乱码，但编辑器打开查看时是看不见这个乱码的


//BOM长这样 <Buffer ef bb bf> 3个字节

//干掉BOM！
let bf2 = fs.readFileSync(path.join(__dirname,'bom.txt'),'utf8');
let result = stripBOM(bf2);
console.log(result.toString());
// console.log(result);

function stripBOM(content){
  if(Buffer.isBuffer(content)){
    if(content[0]===0xEF&&content[1]===0xBB&&content[2]===0xBF){
      return content.slice(3);
    }
    return content;
  }else{ //是string
    if(content.charCodeAt(0)===0xFEFF){
      return content.slice(1);
    }
    return content;
  }
}
